﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace SudokuHelper.Model.Values {
    /// <summary>
    /// Represents an interface to visit IValue descendants
    /// </summary>
    public interface IValueVisitor {
        /// <summary>
        /// Visits user-defined value 
        /// </summary>
        /// <param name="value"></param>
        /// <param name="arg"></param>
        object Visit(UserValue value, object arg);

        /// <summary>
        /// Visits calculated value
        /// </summary>
        /// <param name="value"></param>
        object Visit(CalculatedValue value, object arg);

        /// <summary>
        /// Visits an available valueRange
        /// </summary>
        /// <param name="?"></param>
        object Visit(ValueRange valueRange, object arg);
    }
}